BIN := ../bin/
OBJDIR := ../bin/
GEN := ../gen/

CXX := g++
CXXFLAGS := -Wall -g

MODULES	:= document element attr_node content_node attribute spec_node node
OBJS := $(patsubst %, $(OBJDIR)%.o, $(MODULES))

all: $(BIN)analyseXML

gen: *.l *.y $(OBJS)
	flex -P xml -o'$(GEN)lex.xml.c' xml.l
	bison -p xml --debug --verbose --defines=$(GEN)xml.tab.h xml.y -o $(GEN)xml.tab.c
	cp *.h $(GEN)

$(BIN)analyseXML: gen 
	$(CXX) $(CXXFLAGS) -DSTANDALONE -g -DYYDEBUG=1 -o $(BIN)analyseXML  $(GEN)lex.xml.c $(GEN)xml.tab.c $(OBJS)
	chmod a+x $(BIN)analyseXML

# Déclaration des dépendances:
#
$(OBJDIR)document.o : element.h spec_node.h namespace.h
$(OBJDIR)element.o : node.h element.h attr_node.h
$(OBJDIR)attr_node.o : node.h namespace.h attribute.h element.h
$(OBJDIR)content_node.o : node.h element.h
$(OBJDIR)attribute.o : namespace.h
$(OBJDIR)spec_node.o : attr_node.h
$(OBJDIR)node.o : element.h

# Règle de compilation "générique"
$(OBJDIR)%.o : %.cpp %.h
	@echo "Compilation de "$<
	$(CXX) $(CXXFLAGS) -c $< -o $@;
	@echo ""

clean:
	-rm -rf $(GEN)*.tab.c $(GEN)lex.*.c $(GEN)*.tab.h $(GEN)*.output $(GEN)*.h $(BIN)analyseXML $(OBJDIR)*.o
